package com.datoucai.service;

import org.redisson.Redisson;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;

import java.util.concurrent.TimeUnit;

public class RedissonWatchdogExample {
    public static void main(String[] args) {
        // 配置Redis节点
        Config config = new Config();
        config.useSingleServer().setAddress("redis://117.72.97.202:6379")
                .setDatabase(0)
                .setTimeout(3000)
                .setPassword("DatoucaiRedis1@");

        // 创建Redisson客户端
        RedissonClient redisson = Redisson.create(config);

        // 获取锁，不指定过期时间，触发看门狗机制
        RLock lock = redisson.getLock("myLock");
        try {
//            lock.lock(20, TimeUnit.SECONDS);// 没看门狗
            lock.lock();// 有看门狗
            System.out.println("成功获取锁，开始业务处理");
            // 模拟长时间业务处理
            TimeUnit.SECONDS.sleep(60);
        } catch (InterruptedException e) {
            e.printStackTrace();
        } finally {
            lock.unlock();
            System.out.println("锁已释放");
        }

        // 关闭Redisson客户端
        redisson.shutdown();
    }
}